/**
 * 开头分组 headGroups
 * 10个组+9个组
 */
export const TEN_HEAD_GROUPS = [
  [1, 2, 3, 4, 5, 6, 7, 8, 9],
  [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
  [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
  [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
  [40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
]

/**
 * 质数分组 PrimeGroups
 */
export const TEN_PRIME_GROUPS = [
  [2, 3, 5, 7, 11, 13, 17, 19, 23, 29], // 质数混合组1
  [31, 37, 41, 43, 47, 1, 4, 6, 8], // 质数和非质数混合组2
  [9, 10, 12, 14, 15, 16, 18, 20, 21, 22], // 非质数组1
  [24, 25, 26, 27, 28, 30, 32, 33, 34, 35], // 非质数组2
  [36, 38, 39, 40, 42, 44, 45, 46, 48, 49] // 非质数组3（9个号码）
]

/**
 * 奇偶分组法 oddEvenGroups
 */
export const TEN_ODD_EVEN_GROUPS = [
  [1, 3, 5, 7, 9, 11, 13, 15, 17, 19], // 纯奇数分组
  [21, 23, 25, 27, 29, 31, 33, 35, 37, 39], // 纯奇数分组
  [41, 43, 45, 47, 49, 2, 4, 6, 8, 10], // 奇数（包含最后一个奇数49）加前10个偶数
  [12, 14, 16, 18, 20, 22, 24, 26, 28, 30], // 纯偶数分组
  [32, 34, 36, 38, 40, 42, 44, 46, 48] // 纯偶数分组，9个号码
]

/**
 * 斐波那契数分组 FibonacciGroups
 * 黄金比例分组
 */
export const TEN_FIBONACCI_GROUPS = [
  [1, 2, 3, 5, 8, 13, 21, 34, 16, 17], // 保持不变
  [4, 6, 9, 11, 14, 18, 20, 22, 25, 29, 10], // 添加10以补齐
  [7, 12, 15, 19, 23, 26, 30, 32, 33, 35], // 保持不变
  [24, 27, 28, 31, 36, 37, 38, 39, 41, 42], // 保持不变
  [40, 43, 44, 45, 46, 47, 48, 49] // 保持不变
]

/**
 * 交错均衡递增分组 staggered Balanced Incremental Groups
 * 10个组+9个组
 */
export const TEN_STAGGERED_GROUPS = [
  [1, 2, 11, 12, 21, 22, 31, 32, 41, 42],
  [3, 4, 13, 14, 23, 24, 33, 34, 43, 44],
  [5, 6, 15, 16, 25, 26, 35, 36, 45, 46],
  [7, 8, 17, 18, 27, 28, 37, 38, 47, 48],
  [9, 10, 19, 20, 29, 30, 39, 40, 49]
]

/**
 * 差值递增分组 DifferenceGroups
 */
export const TEN_DIFFERENCE_GROUPS = [
  [1, 2, 4, 7, 11, 16, 22, 29, 37, 46], // 第一组，10个号码
  [3, 5, 8, 12, 17, 23, 30, 38, 47, 49], // 第二组，10个号码
  [6, 9, 13, 18, 24, 31, 39, 48, 45], // 第三组，9个号码
  [10, 14, 19, 25, 32, 40, 42, 44, 35, 26], // 第四组，10个号码
  [15, 20, 27, 34, 41, 33, 21, 28, 36, 43] // 第五组，10个号码
]

/**
 * 中心扩展分组 CenterExpansionGroups
 * 中心对称分组
 */
export const TEN_CENTER_EXPANSION_GROUPS = [
  [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
  [14, 15, 16, 17, 18, 19, 30, 31, 32, 33],
  [8, 9, 10, 11, 12, 13, 34, 35, 36, 37],
  [2, 3, 4, 5, 6, 7, 38, 39, 40, 41],
  [1, 42, 43, 44, 45, 46, 47, 48, 49]
]

/**
 * 大中小号分组 LargeMidSmallGroups
 */
export const TEN_LARGE_MID_SMALL_GROUPS = [
  [1, 2, 3, 4, 17, 18, 19, 34, 35, 36],
  [5, 6, 7, 20, 21, 22, 23, 37, 38, 39],
  [8, 9, 10, 24, 25, 26, 40, 41, 42, 43],
  [11, 12, 13, 14, 27, 28, 29, 44, 45, 46],
  [15, 16, 30, 31, 32, 33, 47, 48, 49]
]

/**
 * 四象限分组 QuadrantGroups
 */
export const TEN_QUADRANT_GROUPS = [
  [1, 2, 3, 13, 14, 15, 25, 26, 37, 38],
  [4, 5, 16, 17, 27, 28, 29, 39, 40, 41],
  [6, 7, 8, 18, 19, 20, 30, 31, 42, 43],
  [9, 10, 21, 22, 32, 33, 34, 44, 45, 46],
  [11, 12, 23, 24, 35, 36, 47, 48, 49]
]

/**
 * 金字塔分组 PyramidGroups
 * 其实和他们是一样的
 * 折返分组 foldBackGroups
 * 对称分组
 * 镜像分组
 */
export const TEN_PYRAMID_GROUPS = [
  [1, 2, 3, 4, 5, 45, 46, 47, 48, 49],
  [6, 7, 8, 9, 10, 40, 41, 42, 43, 44],
  [11, 12, 13, 14, 15, 35, 36, 37, 38, 39],
  [16, 17, 18, 19, 20, 30, 31, 32, 33, 34],
  [21, 22, 23, 24, 25, 26, 27, 28, 29]
]

/**
 * 交错分组 CrossingGroups
 */
export const TEN_CROSSING_GROUPS = [
  [1, 3, 5, 7, 9, 41, 43, 45, 47, 49], // 保持不变
  [11, 13, 15, 17, 19, 31, 33, 35, 37, 39], // 保持不变
  [21, 22, 23, 24, 25, 26, 27, 28, 29, 30], // 替换50为26
  [12, 14, 16, 18, 20, 32, 34, 36, 38, 40], // 保持不变
  [2, 4, 6, 8, 10, 42, 44, 46, 48] // 保持不变
]

/**
 * 跳号分组，跳3 JumpThreeGroups
 */
export const TEN_JUMP_THREE_GROUPS = [
  [1, 4, 7, 10, 13, 16, 19, 22, 25, 28], // 每隔2个号码取一个，第一组
  [31, 34, 37, 40, 43, 46, 49, 2, 5, 8], // 从31开始继续跳2号码，第二组
  [11, 14, 17, 20, 23, 26, 29, 32, 35, 38], // 继续同样模式，第三组
  [41, 44, 47, 3, 6, 9, 12, 15, 18, 21], // 再次继续，第四组
  [24, 27, 30, 33, 36, 39, 42, 45, 48] // 最后一组，9个号码
]

/**
 * 跳号分组，跳4 JumpFourGroups
 */
export const TEN_JUMP_FOUR_GROUPS = [
  [1, 5, 9, 13, 17, 21, 25, 29, 33, 37], // 从1开始，每隔3个号码取一个，第一组
  [41, 45, 49, 2, 6, 10, 14, 18, 22, 26], // 从41开始继续跳3号码，第二组
  [30, 34, 38, 42, 46, 3, 7, 11, 15, 19], // 从30开始，继续跳3号码，第三组
  [23, 27, 31, 35, 39, 43, 47, 4, 8, 12], // 从23开始，继续跳3号码，第四组
  [16, 20, 24, 28, 32, 36, 40, 44, 48] // 从16开始，最后一组9个号码
]

/**
 * 除以5余数分组  ModuloFiveGroups
 * 和跳4一样(或者说跳5)
 */
export const TEN_JUMP_FIVE_GROUPS = [
  [1, 6, 11, 16, 21, 26, 31, 36, 41, 46], // 除以5余1
  [2, 7, 12, 17, 22, 27, 32, 37, 42, 47], // 除以5余2
  [3, 8, 13, 18, 23, 28, 33, 38, 43, 48], // 除以5余3
  [4, 9, 14, 19, 24, 29, 34, 39, 44, 49], // 除以5余4
  [5, 10, 15, 20, 25, 30, 35, 40, 45] // 除以5余0，9个号码
]

/**
 * 跳号分组，跳6 JumpSixGroups
 */
export const TEN_JUMP_SIX_GROUPS = [
  [1, 7, 13, 19, 25, 31, 37, 43, 49, 24], // 从1开始，每隔5个号码取一个，第一组
  [2, 8, 14, 20, 26, 32, 38, 44, 5, 30], // 从2开始，继续跳5号码，第二组
  [3, 9, 15, 21, 27, 33, 39, 45, 6, 36], // 从3开始，继续跳5号码，第三组
  [4, 10, 16, 22, 28, 34, 40, 46, 42], // 从4开始，继续跳5号码，第四组
  [11, 17, 23, 29, 35, 41, 47, 12, 18, 48] // 从11开始，继续跳5号码，最后一组9个号码
]

// 奇偶交替分组（10奇10偶交替） AlternatingGroups
export const TEN_ALTERNATING_GROUPS = [
  [1, 3, 5, 7, 9, 11, 13, 15, 17, 19], // 奇数分组
  [21, 23, 25, 27, 29, 31, 33, 35, 37, 39], // 偶数分组
  [41, 43, 45, 47, 49, 2, 4, 6, 8, 10], // 奇数分组
  [12, 14, 16, 18, 20, 22, 24, 26, 28, 30], // 偶数分组
  [32, 34, 36, 38, 40, 42, 44, 46, 48] // 偶数分组，9个号码
]

// 对角线分组 DiagonalGroups
export const TEN_DIAGONAL_GROUPS = [
  [1, 12, 23, 34, 45, 6, 17, 28, 39, 49],
  [2, 13, 24, 35, 46, 7, 18, 29, 40, 8],
  [3, 14, 25, 36, 47, 9, 19, 30, 41, 10],
  [4, 15, 26, 37, 48, 11, 20, 31, 42, 43],
  [5, 16, 27, 38, 21, 32, 33, 22, 44] // 最后一组9个号码
]

export const TEN_GROUP_MAP = {
  TEN_HEAD_GROUPS,
  TEN_PRIME_GROUPS,
  TEN_ODD_EVEN_GROUPS,
  TEN_FIBONACCI_GROUPS,
  TEN_STAGGERED_GROUPS,
  TEN_DIFFERENCE_GROUPS,
  TEN_CENTER_EXPANSION_GROUPS,
  TEN_LARGE_MID_SMALL_GROUPS,
  TEN_QUADRANT_GROUPS,
  TEN_PYRAMID_GROUPS,
  TEN_CROSSING_GROUPS,
  TEN_JUMP_THREE_GROUPS,
  TEN_JUMP_FOUR_GROUPS,
  TEN_JUMP_FIVE_GROUPS,
  TEN_JUMP_SIX_GROUPS,
  TEN_ALTERNATING_GROUPS,
  TEN_DIAGONAL_GROUPS
}
